<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
      Promise()
      参数: 回调函数，当new执行Promise()的时候，回调函数被执行
      返回值：对象this
      ① this.then(回调函数) 返回值 new Promise()
      ② this.catch(回调函数) 返回值 new Promise()
      ③ this.finally(回调函数) 返回值 new Promise()

      Promise 回调函数
      ① resolve() 是函数，执行resolve()，this.then(回调函数被执行)
      ② reject() 是函数，执行reject() 或者throw抛出一个异常，this.catch(回调函数被执行)
      ③ 无论 resolve\reject， finally(回调函数都会被执行)
      ④ 注意 resolve\reject 默认我们只写一个，resolve执行会取消reject执行效果，反之亦然

      resolve\reject 参数
      ① resolve 参数，传给 then 回调函数
      ② reject 参数，传给 catch 回调函数
      ③ 在Promise中抛出异常方法有两种：reject / throw
      */
      const age = 10000;
      const p = new Promise((resolve, reject) => {
        // resolve("hello resolve");
        reject("hello reject");
      });
      p.then((data) => {
        console.log("then()", data);
      })
        .catch((e) => {
          console.log("catch()", e);
        })
        .finally(() => {
          console.log("finally");
        });
    </script>
  </body>
</html>
